#include "BulletDynamics/Dynamics/btDiscreteDynamicsWorld.h"
#ifdef __cplusplus
extern "C" {
#endif
btDiscreteDynamicsWorld* bullet_NewbtDiscreteDynamicsWorld(btDispatcher* dispatcher,btBroadphaseInterface* pairCache,btConstraintSolver* constraintSolver,btCollisionConfiguration* collisionConfiguration){
	btDispatcher * c_arg_dispatcher=(btDispatcher *)(void*)(dispatcher);
	btBroadphaseInterface * c_arg_pairCache=(btBroadphaseInterface *)(void*)(pairCache);
	btConstraintSolver * c_arg_constraintSolver=(btConstraintSolver *)(void*)(constraintSolver);
	btCollisionConfiguration * c_arg_collisionConfiguration=(btCollisionConfiguration *)(void*)(collisionConfiguration);
	btDiscreteDynamicsWorld* wrap_out = new btDiscreteDynamicsWorld(c_arg_dispatcher,c_arg_pairCache,c_arg_constraintSolver,c_arg_collisionConfiguration);
	return wrap_out;
}

bool bullet_btDiscreteDynamicsWorld_getApplySpeculativeContactRestitution(btDiscreteDynamicsWorld* c_this){
	bool c_out = c_this->getApplySpeculativeContactRestitution();
	bool wrap_out = (c_out);
	return wrap_out;
}

bool bullet_btDiscreteDynamicsWorld_getLatencyMotionStateInterpolation(btDiscreteDynamicsWorld* c_this){
	bool c_out = c_this->getLatencyMotionStateInterpolation();
	bool wrap_out = (c_out);
	return wrap_out;
}

btSimulationIslandManager* bullet_btDiscreteDynamicsWorld_getSimulationIslandManager(btDiscreteDynamicsWorld* c_this){
	btSimulationIslandManager * c_out = c_this->getSimulationIslandManager();
	btSimulationIslandManager* wrap_out = (btSimulationIslandManager*)(void*)(c_out);
	return wrap_out;
}

btSimulationIslandManager* bullet_btDiscreteDynamicsWorld_getSimulationIslandManager1(btDiscreteDynamicsWorld* c_this){
	btSimulationIslandManager const * c_out = c_this->getSimulationIslandManager();
	btSimulationIslandManager* wrap_out = (btSimulationIslandManager*)(void*)(c_out);
	return wrap_out;
}

bool bullet_btDiscreteDynamicsWorld_getSynchronizeAllMotionStates(btDiscreteDynamicsWorld* c_this){
	bool c_out = c_this->getSynchronizeAllMotionStates();
	bool wrap_out = (c_out);
	return wrap_out;
}

void bullet_btDiscreteDynamicsWorld_setApplySpeculativeContactRestitution(btDiscreteDynamicsWorld* c_this,bool enable){
	bool c_arg_enable=enable;
	c_this->setApplySpeculativeContactRestitution(c_arg_enable);
}

void bullet_btDiscreteDynamicsWorld_setLatencyMotionStateInterpolation(btDiscreteDynamicsWorld* c_this,bool latencyInterpolation){
	bool c_arg_latencyInterpolation=latencyInterpolation;
	c_this->setLatencyMotionStateInterpolation(c_arg_latencyInterpolation);
}

void bullet_btDiscreteDynamicsWorld_setSynchronizeAllMotionStates(btDiscreteDynamicsWorld* c_this,bool synchronizeAll){
	bool c_arg_synchronizeAll=synchronizeAll;
	c_this->setSynchronizeAllMotionStates(c_arg_synchronizeAll);
}

void bullet_btDiscreteDynamicsWorld_synchronizeSingleMotionState(btDiscreteDynamicsWorld* c_this,btRigidBody* body){
	btRigidBody * c_arg_body=(btRigidBody *)(void*)(body);
	c_this->synchronizeSingleMotionState(c_arg_body);
}

#ifdef __cplusplus
}
#endif
